package com.dxf.chepter10

/**
 *  一个集合 list(1,2,3,4,"abc")
 *  1 将集合list中的所有数组+1,并返回新集合
 *  2 忽略掉非数字的元素,即 返回的新集合 为 (2,3,4,5)
 * =================================================
 *
 *  偏函数介绍:
 *      1 在对符合某个条件,而不是所有情况下进行逻辑操作时,使用偏函数是一个不错的选择
 *      2 将包在大括号内的一组case 语句封装为函数,我们称为偏函数,只会作用于指定类型的参数或者指定范围的参数进行计算,超出的都会被忽略
 *      3 偏函数在scala中是一个特质PartialFunction
 *
 *
 *  =================================================
 *
 *  偏函数简化形式
 *
 *
 *
 *
 *
 *
 */
object T123_偏函数简化形式 {

  def main(args: Array[String]): Unit = {

    //偏函数解决
    val list = List(1, 2, 3, 4, "abc")

    //偏函数简写1
    var list2 = list.collect(parFun)
    println(list2)

    //偏函数简写2
   var list3 = list.collect{ case i: Int => i + 1}
    println(list3)
    println(list)
  }


  def parFun: PartialFunction[Any, Int] = {
    case i: Int => i + 1
    case j:Double =>(j*2).toInt
  }


}
